<?php
namespace app\middleware;


use http\Env;
use think\facade\Config;
use think\facade\Lang;
use think\facade\App;

class Common
{
    public function handle($request, \Closure $next)
    {
        // 设置mbstring字符编码
        mb_internal_encoding("UTF-8");

        // 如果修改了index.php入口地址，则需要手动修改cdnurl的值
        $url = preg_replace("/\/(\w+)\.php$/i", '', $request->root());
        $template =  Config::get('template');

        $site = Config::get('site');
        // 如果未设置cdnurl则自动匹配得出
        if (!$site['cdnurl']) {
            $site['cdnurl'] = $url;
        }
        $upload = Config::get('upload');
        // 如果未设置cdnurl则自动匹配得出
        if (!$upload['cdnurl']) {
            $upload['cdnurl'] = $url;

        }
        if (\think\facade\Env::get('app_debug')) {
            $site['version'] = time();
            // 如果是调试模式将version置为当前的时间戳可避免缓存
            // 如果是开发模式那么将异常模板修改成官方的
//            Config::set('app.exception_tmpl', THINK_PATH . 'tpl' .  DIRECTORY_SEPARATOR  . 'think_exception.tpl');
        }
        $app = Config::get('app');
        // 如果是trace模式且Ajax的情况下关闭trace
        if (Config::get('app.app_trace') && $request->isAjax()) {
            $app['app_trace'] = false;
            Config::set('app.app_trace', false);
        }
        Config::set($app, 'app');
        Config::set($template,'template');
        Config::set( $upload,'upload');
        Config::set( $site,'site');
        ////////////////////////////////////////////
        // 切换多语言
//        if (Config::get('lang_switch_on') && $request->get('lang')) {
//            \think\facade\Cookie::set('think_var', $request->get('lang'));
//        }
        // Form别名
        if (!class_exists('Form')) {
            class_alias('fast\\Form', 'Form');
        }

        // 加载插件语言包
        Lang::load([
            app()->getAppPath() . 'common' .  DIRECTORY_SEPARATOR  . 'lang' .  DIRECTORY_SEPARATOR  . Lang::getLangSet() .  DIRECTORY_SEPARATOR  . 'addon' . '.php',
        ]);
        return $next($request);

    }

//    public function HttpRun(&$request)
//    {
//        $this->moduleInit($request);
//    }
}
